package com.example.dell.controllsmall.activity.util;

import android.util.Log;
import android.widget.Toast;

import com.example.dell.controllsmall.activity.config.Constants;
import com.example.dell.controllsmall.activity.config.SendType;
import com.yuntongxun.ecsdk.ECChatManager;
import com.yuntongxun.ecsdk.ECDevice;
import com.yuntongxun.ecsdk.ECError;
import com.yuntongxun.ecsdk.ECGroupManager;
import com.yuntongxun.ecsdk.ECMessage;
import com.yuntongxun.ecsdk.SdkErrorCode;
import com.yuntongxun.ecsdk.im.ECGroup;
import com.yuntongxun.ecsdk.im.ECTextMessageBody;

/**
 * Created by lyw on 2017/9/22.
 */

public class SendToRobot {
    String groupId = "";
    createCallbackListener createCallbackListener;

    invitationCallbackListener invitationCallbackListener;

    public void setOnCallBackListener(createCallbackListener listener) {
        this.createCallbackListener = listener;
    }

    public void setOnInvitationCallBackListener(invitationCallbackListener listener) {
        this.invitationCallbackListener = listener;
    }

    public void SendRobot(String order, String type) {
        try {
            ECMessage msg = ECMessage.createECMessage(ECMessage.Type.TXT);
            // msg.setForm("123456");//设置消息发送者
            msg.setMsgTime(System.currentTimeMillis());
            msg.setTo(Constants.OTHERS_NAME);// 设置消息接收者
            msg.setSessionId(Constants.OTHERS_NAME);//接收者ID
            // 设置消息发送类型（发送或者接收）
            msg.setDirection(ECMessage.Direction.SEND);
            // 创建一个文本消息体，并添加到消息对象中
            // 文本消息由用户自定义组装，接收端按照规则解析
            // text=”发送的指令”；
            ECTextMessageBody msgBody = new ECTextMessageBody(order);
            msg.setBody(msgBody);
            // 传入自定义消息类型
            msg.setUserData(type);
            // 调用SDK发送文本接口发送消息到服务器
            ECChatManager manager = ECDevice.getECChatManager();
            manager.sendMessage(msg, new ECChatManager.OnSendMessageListener() {
                @Override
                public void onProgress(String s, int i, int i1) {

                }

                @Override
                public void onSendMessageComplete(ECError error, ECMessage message) {
                    // 处理消息发送结果
                    if (message == null) {
                        return;
                    }
                    // 将发送的消息更新到本地数据库并刷新UI
                    Log.i("WWDZ", "发送成功 ： " + message);
                }
            });
        } catch (Exception e) {
            // 处理发送异常
            Log.i("WWDZ", "send message fail , e=" + e.getMessage());
        }
    }

    public void SendLocal(String order, String type) {
        try {
            ECMessage msg = ECMessage.createECMessage(ECMessage.Type.FILE);
            // msg.setForm("123456");//设置消息发送者
            msg.setMsgTime(System.currentTimeMillis());
            msg.setTo(Constants.OTHERS_NAME);// 设置消息接收者
            msg.setSessionId(Constants.OTHERS_NAME);//接收者ID
            // 设置消息发送类型（发送或者接收）
            msg.setDirection(ECMessage.Direction.SEND);
            // 创建一个文本消息体，并添加到消息对象中
            // 文本消息由用户自定义组装，接收端按照规则解析
            // text=”发送的指令”；
            ECTextMessageBody msgBody = new ECTextMessageBody(order);
            msg.setBody(msgBody);
            // 传入自定义消息类型
            msg.setUserData(type);
            // 调用SDK发送文本接口发送消息到服务器
            ECChatManager manager = ECDevice.getECChatManager();
            manager.sendMessage(msg, new ECChatManager.OnSendMessageListener() {
                @Override
                public void onProgress(String s, int i, int i1) {

                }

                @Override
                public void onSendMessageComplete(ECError error, ECMessage message) {
                    // 处理消息发送结果
                    if (message == null) {
                        return;
                    }
                    // 将发送的消息更新到本地数据库并刷新UI
                    Log.i("WWDZ", "发送成功 ： " + message);
                }
            });
        } catch (Exception e) {
            // 处理发送异常
            Log.i("WWDZ", "send message fail , e=" + e.getMessage());
        }
    }

    public void SendGroup(String groupId, String text, String type) {
        try {
            // 组建一个待发送的ECMessage
            ECMessage msg = ECMessage.createECMessage(ECMessage.Type.TXT);
            //设置消息的属性：发出者，接受者，发送时间等
            msg.setForm(Constants.LOGIN_NAME);
            msg.setMsgTime(System.currentTimeMillis());
            // 设置消息接收者
            msg.setTo(groupId);
            msg.setSessionId(groupId);
            // 设置消息发送类型（发送或者接收）
            msg.setDirection(ECMessage.Direction.SEND);
            // 创建一个文本消息体，并添加到消息对象中
            ECTextMessageBody msgBody = new ECTextMessageBody(text);
            msg.setBody(msgBody);
            // 传入消息类型
            msg.setUserData(type);
            // 调用SDK发送接口发送消息到服务器
            ECChatManager manager = ECDevice.getECChatManager();
            manager.sendMessage(msg, new ECChatManager.OnSendMessageListener() {
                @Override
                public void onSendMessageComplete(ECError error, ECMessage message) {
                    // 处理消息发送结果
                    if (message == null) {
                        return;
                    }
                    // 将发送的消息更新到本地数据库并刷新UI
                    Log.e("GG", "发送成功");
                }

                @Override
                public void onProgress(String msgId, int totalByte, int progressByte) {
                    // 处理文件发送上传进度（尽上传文件、图片时候SDK回调该方法）
                }


            });
        } catch (Exception e) {
            // 处理发送异常
            Log.e("GG", "send message fail , e=" + e.getMessage());
        }


    }

    //创建群组
    public void createGroup() {
        ECGroup group = new ECGroup();
        //设置名称
        group.setName("海风智能科技");
        //设置群组类型
        group.setScope(ECGroup.Scope.TEMP);
        //设置验证权限
        group.setPermission(ECGroup.Permission.NONE);
        // false 群组 true 讨论组
        group.setIsDiscuss(false);
        ECGroupManager groupManager = ECDevice.getECGroupManager();
        groupManager.createGroup(group, new ECGroupManager.OnCreateGroupListener() {
            @Override
            public void onCreateGroupComplete(ECError ecError, ECGroup ecGroup) {
                if (ecError.errorCode == SdkErrorCode.REQUEST_SUCCESS) {
                    //群组创建成功
                    groupId = ecGroup.getGroupId();
                    invitationGroup();
//                    Log.e("GG", "群组创建成功");
//                    createCallbackListener.createSuccess();
                } else {
                    Log.e("GG", "群组创建失败" + ecError.errorCode);
                }

            }
        });
    }

    //邀请进入群组
    public void invitationGroup() {
        // 设置群组ID
        String mgroupId = groupId;
        // 设置邀请加入理由
        String declare = "加入";
        // 设置邀请加入的群组成员（可多选）
        String[] members = new String[]{"fangfangsmall", "fangfangsmalltwo"};
        // 是否需要对方确认（NEED_CONFIRM 需要对方验证，FORCE_PULL 不需要对方验证）
        final ECGroupManager.InvitationMode confirm = ECGroupManager.InvitationMode.FORCE_PULL;
        // 获得SDK群组管理类
        ECGroupManager groupManager = ECDevice.getECGroupManager();
        // 调用邀请加入群组接口，设置结果回调
        groupManager.inviteJoinGroup(mgroupId, declare, members, confirm
                , new ECGroupManager.OnInviteJoinGroupListener() {

                    @Override
                    public void onInviteJoinGroupComplete(ECError error
                            , String groupId, String[] members) {
                        if (error.errorCode == SdkErrorCode.REQUEST_SUCCESS) {
                            // 直接拉进群组，不需要被邀请成员是否同意
//                            Log.e("GG", "邀请加入群组成功");
                            invitationCallbackListener.invitationSuccess(groupId);
                            return;
                        } else {
                            invitationCallbackListener.invitationFail();
                            // 群组邀请成员失败
                            Log.e("GG", "invite join group fail , errorCode="
                                    + error.errorCode);
                        }


                    }
                });
    }

    public interface createCallbackListener {
        void createSuccess();
    }

    public interface invitationCallbackListener {
        void invitationSuccess(String groupid);

        void invitationFail();
    }

}
